<?php

use think\Db;

/**
 * @name Bootstrap
 * @author user-20171122cq\administrator
 * @desc 所有在Bootstrap类中, 以_init开头的方法, 都会被Yaf调用,
 * @see http://www.php.net/manual/en/class.yaf-bootstrap-abstract.php
 * 这些方法, 都接受一个参数:Yaf_Dispatcher $dispatcher
 * 调用的次序, 和申明的次序相同
 */
class Bootstrap extends Yaf\Bootstrap_Abstract
{

    /**
     * 初始化常量
     */
    public function _initConst()
    {
        Yaf\Loader::import(CONF_PATH . DIRECTORY_SEPARATOR . 'const.php');
    }

    /**
     * 初始化函数库
     */
    public function _initHelper()
    {
        Yaf\Loader::import(CONF_PATH . DIRECTORY_SEPARATOR . 'helper.php');
    }

    /**
     * 初始化配置
     */
    public function _initConfig()
    {
        //把配置保存起来
        $arrConfig = Yaf\Application::app()->getConfig();
        Yaf\Registry::set('config', $arrConfig);
    }

    /**
     * 初始化 数据库
     * @param \Yaf\Dispatcher $dispatcher
     */
    public function _initDB(Yaf\Dispatcher $dispatcher)
    {
        //设置DB参数
        Yaf\Loader::import(VENDOR_PATH . DIRECTORY_SEPARATOR . 'autoload.php');
        Db::setConfig(Yaf\Application::app()->getConfig()->get('db')->get('test')->toArray());
    }

    /**
     * 初始化 SESSION
     * @param Yaf_Dispatcher $dispatcher
     */
    public function _initSession(Yaf\Dispatcher $dispatcher)
    {
        session_id() || session_start();
    }

    public function _initPlugin(Yaf\Dispatcher $dispatcher)
    {
        //注册一个插件
        $objSamplePlugin = new SamplePlugin();
        $dispatcher->registerPlugin($objSamplePlugin);
    }

    public function _initRoute(Yaf\Dispatcher $dispatcher)
    {
        //在这里注册自己的路由协议,默认使用简单路由

        //注册一个简答路由
//        $router = $dispatcher->getRouter() ;
//        $route = new Yaf\Route\Simple('m','c','a') ;
//        $router->addRoute('simple', $route) ;

        //使用配置文件设置路由
//        $router = $dispatcher->getRouter();
//        $router->addConfig(Yaf\Registry::get('config')->routes);


        //使用正则路由
//        $router = $dispatcher->getRouter();


    }

    public function _initView(Yaf\Dispatcher $dispatcher)
    {
        //在这里注册自己的view控制器，例如smarty,firekylin

        //禁用视图
//        $dispatcher->disableView();

        //只在API模块的时候去掉视图渲染
//        if (in_array($dispatcher->getRequest()->getModuleName(), ['Api'])) {
//            $dispatcher->disableView();
//        }

    }


}
